package xing.example.config.editor;

import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
import org.springframework.beans.factory.config.CustomEditorConfigurer;
import org.springframework.stereotype.Component;
import xing.example.bean.A;
import xing.example.editor.AEditor;

import java.beans.PropertyEditor;
import java.util.HashMap;
import java.util.Map;

/**
 * 方法二 通过添加 CustomEditorConfigurer 的 Bean 注册。
 * <p>
 * CustomEditorConfigurer 实际上是一个 BeanFactoryPostProcessor，
 * <p>
 * 在 postProcessBeanFactory 方法里 调用了 beanFactory 的 registryCustomEditor()
 * <p>
 * 这比方法 1 的 BeanFactoryAware 方式好很多。
 *
 * @author xing
 * @date 2023/2/15 17:24:42
 */
//@Component
public class RegisterCustomEditors2 extends CustomEditorConfigurer implements BeanFactoryPostProcessor {
    public RegisterCustomEditors2() {
        super();
        setCustomEditors(getCustomEditors());
    }

    public Map<Class<?>, Class<? extends PropertyEditor>> getCustomEditors() {
        HashMap<Class<?>, Class<? extends PropertyEditor>> hashMap = new HashMap<>();
        hashMap.put(A.class, AEditor.class);
        return hashMap;
    }
}
